package ar.edu.utn.frba.tacs.warnes.beans;

import java.util.Map;

import javax.faces.context.FacesContext;

import ar.edu.utn.frba.tacs.warnes.utils.ConstantesWarnes;


/**
 * Clase para los metodos genericos de los beans que usa JSF 
 *
 * @author dmiglino
 */
public abstract class BaseBean {
	//error a mostrar en cada pagina
	public String errores = "";

	public String getErrores() {
		return this.errores;
	}

	public void setErrores(String errores) {
		this.errores = errores;
	}
	
	/**
	 * Redirecciona a la pagina anterior
	 */
	public String actionVolver() {
		removeFromSession(ConstantesWarnes.ALTA);
		return "volver";
	}
	
	/**
	 * Redirecciona a la pagina de agregar
	 */
	public String actionAgregar() {
		storeOnSession(ConstantesWarnes.ALTA, true);
		return "agregar";
	}

	/**
	 * Guarda un objeto en la sesion
	 * 
	 * @param key object key
	 * @param object value to store
	 */
	public static void storeOnSession(String key, Object object) {
		FacesContext ctx = FacesContext.getCurrentInstance();
		Map<String, Object> sessionState = ctx.getExternalContext()
				.getSessionMap();
		sessionState.put(key, object);
	}

	/**
	 * Remueve el objeto de la sesion
	 * 
	 * @param key object key
	 * 
	 */
	public static void removeFromSession(String key) {
		FacesContext ctx = FacesContext.getCurrentInstance();
		Map<String, Object> sessionState = ctx.getExternalContext()
				.getSessionMap();
		sessionState.remove(key);
	}

	/**
	 * Obtiene objetos de la sesion.
	 * 
	 * @param key
	 *            
	 */
	public static Object getFromSession(String key) {
		FacesContext ctx = FacesContext.getCurrentInstance();
		Map<String, Object> sessionState = ctx.getExternalContext()
				.getSessionMap();
		return sessionState.get(key);
	}
}
